package main

import "fmt"

type OpFunc func(int) int

func Add(val int, opFunc OpFunc) OpFunc {
	return func(i int) int {
		return opFunc(i + val)
	}
}

func Multi(val int, opFunc OpFunc) OpFunc {
	return func(i int) int {
		return opFunc(i * val)
	}
}

func Identify(i int) int {
	return i
}

func main() {
	add := Add(3, Multi(2, Identify))
	fmt.Println(add(1))
}
